﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using VentaElectrodomesticos.GUI.Validaciones;

namespace VentaElectrodomesticos.GUI.Base
{
    public partial class BaseValidaciones : Form
    {
        protected List<string> Errores { get; set; }

        public BaseValidaciones()
        {
            InitializeComponent();
            this.Errores = new List<string>();
        }

        private bool cumpleCondiciones()
        {
            this.cumpleValidaciones();
            return this.Errores.Count == 0;
        }

        protected void filter()
        {
            this.doAction(this.doFilter);
        }

        protected void save()
        {
            this.doAction(this.doSave);
        }

        private void doAction(MethodInvoker doAction)
        {
            if (this.cumpleCondiciones())
                doAction.Invoke();
            else
                this.mostrarErrores(this.Errores);
        }

        protected virtual void doSave() { }
        
        protected virtual void doFilter() { }

        protected virtual void cumpleValidaciones() { }

        protected void mostrarErrores(List<string> errores)
        {
            InformeErrores frmInformeErrores = new InformeErrores(this.Errores);
            frmInformeErrores.StartPosition = FormStartPosition.CenterScreen;
            frmInformeErrores.ShowDialog();
            this.Errores.Clear(); 
        }
    }
}
